<?php
interface INumber extends IObject {
    public function __construct($number = 0);
    public static function create ($number = 0);
    public function __toString ();
    public function getString ($decimals = null, $decPoint = ',', $thousandsSep = '');
    public function get ();
    public function set ($number);
    public function getInt ();
    public function getFloat ();
    public function isInfinite ();
    public function isFinite ();
    public function isNaN ();
    public function isFloat ();
    public function isInt ();
    public function times ($func);
    public function isOdd ();
    public function isEven ();
    public function remainder ($num);
    public function dump ($plain = false);

    // To/from hex/oct/bin
    public function hex ();
    public function oct ();
    public function bin ();

    // Rand
    public function rand ();
    public function seed ($seed);

    // Compare
    public function gt ($num = 0, $including = false);
    public function lt ($num = 0, $including = false);
    public function equals ($num);

    // Arithmetic
    public function add ();
    public function subtract ();
    public function multiply ();
    public function divided ();

    // Sum
    public function sum ($mode = self::FULL);

    // Rounding
    public function round ($mode = 0);

	// Converting
    public function convert ($type, $from, $to);

	// Math
    public function abs ();
    public function power ($pow = 2);
    public function root ($root = 2);

    // Trigonometry
    public function sin ();
    public function cos ();
    public function tan ();
    public function ctan ();
    public function asin ();
    public function acos ();
    public function atan ();
    public function actan ();
    public function sinh ();
    public function cosh ();
    public function tanh ();
    public function asinh ();
    public function acosh ();
    public function atanh ();

    public function log ($base = M_E);
    public function exp ();
}